package cn.diancan.Tags.abs;

import java.util.Map;

import cn.diancan.Tags.utils.DirectiveUtils;
import freemarker.template.TemplateDirectiveModel;
import freemarker.template.TemplateException;
import freemarker.template.TemplateModel;

/**
 * 内容标签基类
 * @author zhenglong
 */
public abstract class AbstractGoodsDirective implements TemplateDirectiveModel {
	
	/**
	 * 输入参数，栏目ID。允许多个栏目ID，用","分开。和categoryPath之间二选一，ID优先级更高。
	 */
	public static final String PARAM_CATEGORY_ID = "categoryId";
	
	/**
	 * 输入参数，TAG ID。允许多个TAG ID，用","分开。和tagNames之间二选一，ID优先级更高。
	 */
	public static final String PARAM_TAG_ID = "tagId";
	
	/**
	 * 输入参数，TAG NAME。允许多个TAG NAME，用","分开。
	 */
	public static final String PARAM_TAG_NAME = "tagName";

	/**
	 * 输入参数，栏目选项。用于单栏目情况下。 
	 * 0 ：自身栏目(categoryId可以有多个) 
	 * 1 ：包含子栏目(categoryId只能有一个) 
	 * 2: 包含副栏目(带栏目信息 categoryId只能有一个)
	 */
	public static final String PARAM_CATEGORY_OPTION = "categoryOption";
	
	/**
	 * 输入参数，是否团购。可以为null
	 */
	public static final String IS_GROUP_BUY = "isgroupbuy";
	
	/**
	 * 输入参数，是否虚拟商品。可以为null
	 */
	public static final String IS_VIRTUAL = "isvirtual";
	
	/**
	 * 输入参数，是否限购。可以为null
	 */
	public static final String IS_LIMIT = "islimit";
	
	/**
	 * 输入参数，是否特价。可以为null
	 */
	public static final String IS_TEJIA = "istejia";
	
	/**
	 * 输入参数，排序方式。
	 * <ul>
	 * <li>0: 默认降序
	 * <li>1：价格升序
	 * <li>2：价格降序
	 * <li>3：评价等级降序
	 * <li>4：评价等级升序
	 * <li>5：销售量升序
	 * <li>6：销售量降序
	 * <li>7：上架时间升序
	 * <li>8：上架时间降序 
	 * </ul>
	 */
	public static final String PARAM_ORDER_BY = "orderBy";
	
	/**
	 * 输入参数，不包含的文章ID。用于按tag查询相关文章。
	 */
	public static final String PARAM_EXCLUDE_ID = "excludeId";

	protected Long[] getCategoryIds(Map<String, TemplateModel> params)
			throws TemplateException {
		Long[] ids = DirectiveUtils.getLongArray(PARAM_CATEGORY_ID, params);
		if (ids != null && ids.length > 0) {
			return ids;
		} else {
			return null;
		}
	}
}
